Skip to content

EDG-217 Houston: Add BulkTagBrowser SDK interface#56

Closed
marregui wants to merge 5 commits intomasterfrom
feature/EDG-217-houston-implementation
Closed

EDG-217 Houston: Add BulkTagBrowser SDK interface#56
marregui wants to merge 5 commits intomasterfrom
feature/EDG-217-houston-implementation

Conversation

@marregui
Copy link
Copy Markdown
Contributor

@marregui marregui commented Mar 12, 2026

Summary

Adds the Adapter SDK extension for the Houston feature (EDG-217) — bulk device tag browsing and import for OPC UA adapters.

Three new types in com.hivemq.adapter.sdk.api.discovery:

  • BulkTagBrowser — mixin interface that adapters implement alongside ProtocolAdapter to support bulk address-space browsing. Single method: List<BrowsedNode> browse(rootNodeId, maxDepth). Returns a pre-sorted list of discovered variable nodes.
  • BrowsedNode — Java record (11 fields) representing a discovered device variable node: 7 device-sourced fields (nodePath, namespaceUri, namespaceIndex, nodeId, dataType, accessLevel, nodeDescription) and 4 generated defaults (tagNameDefault, tagDescription, northboundTopicDefault, southboundTopicDefault).
  • BrowseException — checked exception for browse failures.

This is purely additive — no existing interfaces or classes are modified. Runtime detection is via adapter instanceof BulkTagBrowser. Future protocol adapters (Modbus device profiles, EtherNet/IP, etc.) can opt in by implementing the same interface.

Related PRs

  • hivemq-edge: #1444 — core implementation (REST API, serializers, validator, importer, OPC UA browser)
  • hivemq-edge-test: #321 — integration tests (48 tests including end-to-end round-trip)
  • hivemq-edge-composite: #137 — OpenAPI resource scan

Linear ticket

EDG-217 — Houston Implementation

Test plan

  • ./gradlew :hivemq-edge-adapter-sdk:compileJava passes
  • No existing tests broken
  • OPC UA adapter implements BulkTagBrowser and passes 48 integration tests

@codepitbull codepitbull force-pushed the feature/EDG-217-houston-implementation branch from aa1e713 to 1d6c76c Compare March 20, 2026 16:46
@marregui marregui force-pushed the feature/EDG-217-houston-implementation branch 2 times, most recently from 0aac7cc to f4c798f Compare March 24, 2026 14:29
@mschoenert-hivemq mschoenert-hivemq changed the title Houston: Add BulkTagBrowser SDK interface EDG-217 Houston: Add BulkTagBrowser SDK interface Mar 25, 2026
The licenseMain task requires Copyright 2023-present per the repo's
HEADER file. The Houston discovery files had 2019-present.
@marregui marregui force-pushed the feature/EDG-217-houston-implementation branch from f4c798f to 0f7c60b Compare March 26, 2026 09:30
Rename the browse parameter from rootNodeId to rootId to be
protocol-agnostic. Document namespaceUri and namespaceIndex as
protocol-specific context fields, not strictly OPC UA namespaces.
Move BulkTagBrowser, BrowsedNode, and BrowseException out of the
adapter SDK per Martin's directive — the SDK is public and committing
to OPC-UA-shaped abstractions before implementing adapter #2 is
premature. The types now live in hivemq-edge (OPC UA module) under
a neutral package (com.hivemq.edge.adapters.browse).
@marregui
Copy link
Copy Markdown
Contributor Author

Closing — per Martin's review feedback, Houston ships without SDK changes. The browse types (BulkTagBrowser, BrowsedNode, BrowseException) now live inside the OPC UA module under a neutral package (com.hivemq.edge.adapters.browse). They'll move to the SDK once we have a second protocol implementation to inform the right abstractions.

See the updated hivemq-edge PR (#1444) for the new approach.

@marregui marregui closed this Mar 26, 2026
@marregui marregui deleted the feature/EDG-217-houston-implementation branch March 27, 2026 16:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants